package com.kehutong.payfees.worker;

import java.time.LocalDateTime;

import com.kehutong.payfees.service.record.AccoutServiceImpl;
import org.coraframework.logger.Logger;
import org.coraframework.logger.LoggerFactory;
import org.coraframework.orm.jdbc.JdbcSession;
import org.coraframework.util.Ioc;

import com.kehutong.common.worker.Worker;
import com.kehutong.payfees.service.ChargeBillServiceImpl;

/**
 * 预付款自动扣款
 */
//public class ChargeAdvanceWorker implements Worker<ChargeAdvanceWorker> {
//
//    static final Logger logger = LoggerFactory.getLogger(ChargeAdvanceWorker.class);
//
//    public ChargeAdvanceWorker() {
//        this.nextTime = LocalDateTime.now().plusMinutes(3);
//        this.jdbcSession = Ioc.getInstance(JdbcSession.class);
//        this.chargeBillService = Ioc.getInstance(ChargeBillServiceImpl.class);
//        this.accoutService = Ioc.getInstance(AccoutServiceImpl.class);
//    }
//
//    private LocalDateTime nextTime;
//    private ChargeBillServiceImpl chargeBillService;
//    private AccoutServiceImpl accoutService;
//    private JdbcSession jdbcSession;
//
//    @Override
//    public String getId() {
//        return "charge-advance-worker";
//    }
//
//    @Override
//    public void run() {
//        this.doWork();
//    }
//
//    private void doWork() {
//        List<ChargeBill> bills = jdbcSession.findArray(ChargeBill.class)
//                .eq("paidState", BillPaidState.UNPAID)
//				// 账单到了应付款日期
//                .minEq("shouldPayDate", LocalDateTime.now())
//
//                .eq("enableState", BillEnableState.ENABLE)
//                .eq("deleted", false)
//                .exe();
//
//        for (ChargeBill bill : bills) {
//        	House house = Pool.get(House.class, bill.getHouseNo());
//            if (house == null) {
//                continue;
//            }
//            if (!house.isEnableAutoAdvance()) {
//                开启自动扣款开关
//                continue;
//            }
            
         // 执行扣款
//            CallBackReturnNoException<Boolean> result = ()->{
//            	JSONResult dealResult = accoutService.doPayWuYe(bill.getId(), bill.getHouseNo(), bill.getCommunityNo(), bill.getTotal());
//                if (!dealResult.isOk()) {
//                    return false;
//                }
//
//                bill.setPaidAt(LocalDateTime.now());
//                bill.setPayMethod(BillPayMethod.ADVANCE_PAY);
//                bill.setPaidState(BillPaidState.PAID);
//                // 缴费人信息
//                bill.setPayerName("定时扣款");
//                jdbcSession.updateById(bill);
//                return true;
//            };
//            Boolean bool = (Boolean) Locks.exeSyn(house.getId(), result);
//            if (bool) {
//            	continue;
//            }

//            chargeBillService.asyncNotifyCompanyAfterPaySuccess(bill);
//            chargeBillService.asyncNotifyCustomAfterPaySuccess(bill);
//
//        }
//    }
//
//
//    @Override
//    public boolean sendAble() {
//        return LocalDateTime.now().isAfter(nextTime);
//    }
//
//    @Override
//    public boolean isEffect() {
//        return true;
//    }
//
//
//	@Override
//	public LocalDateTime getHandTime() {
//		return null;
//	}
//
//}
